package com.hzw.saas.api.group;

import java.util.List;
import java.util.Map;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.hzw.saas.api.group.bo.GroupMemberBo;
import com.hzw.saas.api.group.bo.UserMemberBo;

/**
 * <p>
 * 群组成员表 服务类
 * </p>
 *
 * @author sonam
 * @since 2020-12-23
 */
public interface IGroupMemberService {

    /**
     * 获取当前登录用户的所有群组id
     * @return
     */
    List<String> getGroupIdListByUserId(String userId);

    /**
     * 通过群组ID查询出该群组下的所有成员用户ID
     * @param groupId
     * @return
     */
    List<String> getAllMemberUserIdByGroupId(String groupId);

    /**
     * 获取选择的群组成员列表（包含角色信息）
     * @return
     */
    IPage<UserMemberBo> getGroupUserAndRoleList(String groupId, Page<UserMemberBo> page);

    GroupMemberBo getById(String memberId);

    /**
     * 成员加入群组
     * @return
     */
    boolean memberJoinGroup(String groupId, String userId, String roleId);

    /**
     * 用户是否能够加入群组
     * @param userId
     * @param groupId
     * @return
     */
    boolean tryJoinGroup(String userId, String groupId);

    /**
     * 指定群组id，返回成员数量
     * @param groupId
     * @return
     */
    int getMemberCountByGroupId(String groupId);

    Map<String,List<String>> getAllByIds(List<String> groupIds);
}
